const urlRestartList = "/restartServiceController/list";
const urlRestart = "/restartServiceController/restart";
$(function () {
    // jq初始化
    // 初始化重启展示表格
    initRestartTable();

    initRestartToolbarBtn();
});
function initRestartToolbarBtn() {
    $("#btn_restart").click(function () {
        // 获取选中的数据行
        let rows = $('#restartList').bootstrapTable('getSelections');
        // 如果没有选中数据
        if (rows.length < 1) {
            errorMsg("没有选中任何记录", type.INFO)
            return;
        }
        // 非阻塞确认框....
        bootbox.confirm("确认要重启" + rows.length + "条记录吗?", function (result) {
            if (result) {
                // 可能不同的页面删除的对应唯一条件不同,这里放在不同的js中
                restartService(rows);
            } else {
            }
        });
    })
}
function restartService(rows) {
    // 映射出ID array
    let ids = rows.map(r => {
        return r.SERVICE_ID
    })
    let param = {}
    param["IDS"] = ids;
    // 同步删除数据,然后刷新列表
    ajax(urlRestart, param, true, 5);
    errorMsg("请求重启成功,正在重启", type.INFO)
    // 默默的刷新表格
    // silenceRefresh("list");
}
// function showRestartList() {
//     $("#add .bootstrap-table").css("display", "inline-block");
// }

// 初始化重启列表table
function initRestartTable() {
    //1.初始化Table
    console.log("初始化重启列表表格")
    let oTable = new RestartTableInit();
    oTable.Init(restartColumn);
}


// ---------------------初始化table---------------------
let RestartTableInit = function () {
    console.log("初始化重启table")
    let oTableInit = {};
    oTableInit.Init = function (columns) {
        $("#restartList").bootstrapTable({
            url: urlRestartList,  //请求后台的URL（*）
            method: 'POST',                     //请求方式（*）
            searchTimeOut: 3000,                //请求超时时间
            toolbar: '#restart_toolbar',             //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: false,                  //是否显示分页（*）
            sortable: true,                     //是否启用排序
            queryParams: oTableInit.queryParams,//传递参数（*）
            pageNumber: 1,                      //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: ['ALL'],                  //可供选择的每页的行数（*）
            strictSearch: false,                //false模糊搜索
            showColumns: true,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            searchOnEnterKey: false,            //回车触发搜索
            visibleSearch: false,               //设置true 为仅在可见列/数据中搜索，如果数据包含其他未显示的值，则在搜索时将忽略它们。
            showSearchButton: false,            //设置true 为在搜索输入后面显示搜索按钮。仅在按下按钮时才会执行搜索（例如，以防止交通或加载时间）。
            showSearchClearButton: false,        //设置true为在搜索输入后面显示一个清除按钮，该按钮将清除搜索输入（还包括来自过滤器控件的所有过滤器（如果启用））。
            trimOnSearch: true,                 //设置true 为修剪搜索字段中的空格。
            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            clickToSelect: true,                //是否启用点击选中行
            height: 600,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                     //每一行的唯一标识，一般为主键列
            showToggle: false,                  //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                  //是否显示父子表
            singleSelect: false,                //设置True 将禁止多选
            classes: 'table-no-bordered',       //删除表格边框
            formatLoadingMessage: function () {   //显示正在加载文案
                return "";
            },
            responseHandler: function (res) {   // 请求服务器返回的数据data
                if (SUCCESS === res.RSPCD) {
                    let data = {
                        "limit": res.LIMIT,
                        "offset": res.OFFSET,
                        "search": res.SEARCH,
                        "sort": res.SORT,
                        "order": res.ORDER,
                        "rows": res.BODY.LIST,
                        "total": res.TOTAL
                    }
                    return data;
                } else {
                    // 弹窗提示账号或者密码错误啥的
                    errorMsg(res.RSPMSG, type.DANGER)
                }
            },
            rowStyle: function (row, index) {
                //bootstrap table支持5中表格的行背景色，分别是’active’, ‘success’, ‘info’, ‘warning’, 'danger’这五种，
                // 至于每种对应的背景颜色，将代码运行起来就可看到。关于这个方法的返回值，
                // 按照bootstrap table的规则，必须返回一个json格式的对象型如： { classes: strclass }
                let number = index % 5;
                return {classes: rowStyle[number]}
            },
            onCheck: function (row, $element) { // 选中行事件
                console.log("选中行事件")
            },
            onUncheck: function (row, $element) { // 取消选中事件
                console.log("取消选中事件")
            },
            onCheckAll: function (rowsAfter, rowsBefore) {// 全选事件
                console.log("全选中事件")
            },
            onUncheckAll: function (rowsAfter, rowsBefore) {// 取消全选事件
                console.log("取消全选事件")
            },
            columns: columns,
        });
    };
    oTableInit.queryParams = function (params) {
        console.log("表格查询传递参数:")
        console.log(params)
        let searchVal = $(".fixed-table-toolbar .search-input").val();
        let temp = {
            "PAGE_CAPACITY": params.limit,   //页面大小
            "PAGE_OFFSET": params.offset,  //数据偏移量,比如第一页是页码1,每页5,第二页这个数据就是10
            "SORT_TYPE": params.order, // 排序方式
            "SORT_NAME": params.sort, // 排序列名
            "SEARCH": StringUtil.isEmpty(searchVal) ? null : searchVal.trim(), // 搜索内容
        };
        console.log("最终查询参数:")
        console.log(temp)
        // 注意这里要转换成json
        return toJsonStr(temp);
    };
    return oTableInit;
};

const restartColumn =
    [{
        checkbox: true
    }, {
        field: 'SERVICE_ID',
        title: 'ID',
        align: 'center',
        visible: true
    }, {
        field: 'SERVICE_NAME',
        title: '服务名称',
        align: 'center',
        visible: true
    }, {
        field: 'SERVICE_PARENT',
        title: '服务父路径',
        align: 'center',
        visible: true
    },  {
        field: 'SERVICE_ORDER',
        title: '重启优先级',
        align: 'center',
        visible: true
    }, {
        field: 'SERVER_NAME',
        title: '服务器名称',
        align: 'center',
        visible: true
    },{
        field: 'SERVER_HOST',
        title: '服务器IP',
        align: 'center',
        visible: true
    },{
        field: 'SERVER_PORT',
        title: '服务器PORT',
        align: 'center',
        visible: true
    },{
        field: 'SERVER_USER',
        title: '服务器用户',
        align: 'center',
        visible: true
    },{
        field: 'SERVER_DESC',
        title: '服务器描述',
        align: 'center',
        visible: false
    },{
        field: 'OPERATOR',
        title: '操作用户',
        align: 'center',
        visible: false
    },{
        field: 'RESTART_SUCCESS',
        title: '重启状态',
        align: 'center',
        visible: true,
        formatter: function(value, item, index) {
            console.log(value)
            if (value === null || value === undefined) {
                return "-";
            }
            return value===false?"未重启":"已重启";
        }
    },];


function customer_sheet_name() {
    return "重启列表";
}